package com.sheng.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sheng.entity.ApiAuto;
import com.sheng.mapper.ApiAutoMapper;
import com.sheng.po.jmeter.JmeterPathPo;
import com.sheng.po.jmeter.JmeterSavePo;
import com.sheng.po.jmeter.PageJmeterQuery;
import com.sheng.service.IApiAutoService;
import com.sheng.util.JmeterUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author 王胜
 * @since 2022-12-02 13:31
 */
@Service
public class ApiAutoServiceImpl extends ServiceImpl<ApiAutoMapper, ApiAuto> implements IApiAutoService {

    @Autowired
    private ApiAutoMapper apiAutoMapper;


    @Override
    public Integer saveJmxWindows(JmeterSavePo jmeterSavePo) {
        return apiAutoMapper.saveJmxWindows(jmeterSavePo);
    }

    //分页+模糊查询
    @Override
    public PageInfo<ApiAuto> getJmeterInfoByPage(PageJmeterQuery pageJmeterQuery) {
        PageHelper.startPage(pageJmeterQuery.getPageNumber(),pageJmeterQuery.getPageSize());
        return new PageInfo<ApiAuto>(apiAutoMapper.getJmeterInfoByPage(pageJmeterQuery));
    }

    //windows环境下根据脚本id执行
    @Override
    public String  runJmWinById(Integer id) {
        String path = apiAutoMapper.getWinPathById(id);
        JmeterPathPo jmeterPath = new JmeterPathPo(path);
        String reportUrl = JmeterUtil.windowsRun(jmeterPath);
        Integer integer = apiAutoMapper.saveWinReport(id, reportUrl);
        if (integer == 1){
            return reportUrl;
        }
        return null;
    }

    //根据脚本id获取脚本信息
    @Override
    public ApiAuto getJmeterById(Integer id) {
        return apiAutoMapper.getJmeterById(id);
    }

    //更新脚本信息
    @Override
    public Integer updateJmeter(ApiAuto apiAuto) {
        return apiAutoMapper.updateJmeter(apiAuto);
    }

    @Override
    public Integer deleteJmeter(Integer id) {
        return apiAutoMapper.deleteJmeter(id);
    }
}
